﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ClasificacionVerbo
{
    public class DiccionarioVerbo
    {
        private string pathFile;
        public Dictionary<string, string> VerbosExistentes;
        string verboIngresado;
        System.IO.StreamReader file;

        public DiccionarioVerbo(string verboIng)
        {
            verboIng = verboIng.ToLower();
            char m = 'm';

            int valor1 = (int)verboIng[0];
            int valor2 = (int)m;

            Console.WriteLine("valor 1 :"+valor1+" valor2: "+valor2);
            if (valor1 < valor2) // primera letras < 'm'
                pathFile = "Resources/diccionario verbos 1.txt";
            else
                pathFile = "Resources/diccionario verbos 2.txt";

            Console.WriteLine("archivo a buscar: " + pathFile);

            file = new System.IO.StreamReader(pathFile, System.Text.Encoding.Default, true);

            verboIngresado = verboIng;

            if (!System.IO.File.Exists(pathFile))
            {
                MessageBox.Show("Archivo con clasificación de verbos, no encontrado.", "Error archivo no existe", MessageBoxButtons.OK);
                return;
            }
            
            VerbosExistentes = new Dictionary <string,string>();

            //Crear diccionario, inicialmente definicion sin definir.
            string definicionVerbo = "undefined";

            //Inicializar diccionario con todos los elementos, todos los verbos sin definir 
            VerbosExistentes.Add(verboIngresado,definicionVerbo);

            this.leerArchivo();
        }

        public void leerArchivo()
        {
            string verboMasDefinicion;
            string[] separacionLinea;
            string verboLeido;
            string definicion;

            while ((verboMasDefinicion = file.ReadLine()) != null)//Lectura del archivo verbo : definicion desde archivo
            {
                //separar verbo de la definicion
                separacionLinea = verboMasDefinicion.Split(':');
                if (separacionLinea.Length < 2)
                    Console.WriteLine("ERROR -> " + verboMasDefinicion);
                verboLeido = separacionLinea[0].ToLower();
                verboLeido = verboLeido.Trim();//quitar espacios al inicio y al final
                definicion = separacionLinea[1].ToLower();
                definicion = definicion.Trim();//Quitar espacios al inicio y al final

                //Console.WriteLine("verbo Leido (" + verboLeido + ") Verbo ingresado: (" + verboIngresado + ") equals: " + verboLeido.Equals(verboIngresado, StringComparison.OrdinalIgnoreCase));

                if (verboLeido.Equals(verboIngresado, StringComparison.OrdinalIgnoreCase))
                {
                    VerbosExistentes[verboLeido] = definicion;
                }
            }
        }

        public string getValueDictionary()
        {
            return VerbosExistentes[verboIngresado];
        }

        public Dictionary<string,string> getDictionary()
        {
           return VerbosExistentes;
        }
    }
}
